import asyncio
import os
import sys
from pathlib import Path

# 添加项目根目录到Python路径
sys.path.insert(0, str(Path(__file__).parent))

from app.models import User, UserRoleEnum
from app.auth import get_password_hash
from tortoise import Tortoise
from app.settings import TORTOISE_ORM


async def init_admin_user():
    """初始化管理员用户"""
    try:
        # 初始化数据库连接
        await Tortoise.init(config=TORTOISE_ORM)

        # 检查是否已存在管理员
        admin_user = await User.filter(username="admin").first()
        if not admin_user:
            # 创建管理员账户
            admin_user = await User.create(
                username="admin",
                email="admin@example.com",
                password_hash=get_password_hash("admin123"),
                role=UserRoleEnum.SUPER_ADMIN,
                is_active=True
            )
            print("=" * 50)
            print("管理员账户已创建成功!")
            print(f"用户名: admin")
            print(f"密码: admin123")
            print("=" * 50)
        else:
            print("管理员账户已存在")

    except Exception as e:
        print(f"初始化管理员时发生错误: {e}")
        # 可以根据具体异常类型进行更详细的错误处理
    finally:
        # 确保关闭数据库连接
        await Tortoise.close_connections()


if __name__ == "__main__":
    asyncio.run(init_admin_user())